package com.gitee.l0km.casban.ctor.annotations;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import com.gitee.l0km.common.spring.core.annotation.AliasFor;

/**
 * 定义在注解字段上指定该字段提供构造对象需要的Class<br>
 * 字段类型要求为Class或String,当为String时，应该提供类的全名
 * @author guyadong
 *
 */
@Retention(RUNTIME)
@Target(METHOD )
public @interface ConstructType {
	/** 优先级定义，当有注解中有多个字段有此注解定义时，值越小的优先级越高 */
	@AliasFor("priority")
	int value() default 0;
	@AliasFor("value")
	/** 
	 * @see #value() 
	 */
	int priority() default 0;
	/**
	 * 希望的类型，当字段类型为String时，通过此字段定义要求返回的类为希望类型或子类或接口实现
	 */
	Class<?> expect() default Object.class;
}
